package com.czw.springmvc.controller;


//
//                            _ooOoo_  
//                           o8888888o  
//                           88" . "88  
//                           (| -_- |)  
//                            O\ = /O  
//                        ____/`---'\____  
//                      .   ' \\| |// `.  
//                       / \\||| : |||// \  
//                     / _||||| -:- |||||- \  
//                       | | \\\ - /// | |  
//                     | \_| ''\---/'' | |  
//                      \ .-\__ `-` ___/-. /  
//                   ___`. .' /--.--\ `. . __  
//                ."" '< `.___\_<|>_/___.' >'"".  
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                 \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖镇楼            BUG辟易  
//          佛曰:  
//                  写字楼里写字间，写字间里程序员；  
//                  程序人员写程序，又拿程序换酒钱。  
//                  酒醒只在网上坐，酒醉还来网下眠；  
//                  酒醉酒醒日复日，网上网下年复年。  
//                  但愿老死电脑间，不愿鞠躬老板前；  
//                  奔驰宝马贵者趣，公交自行程序员。  
//                  别人笑我忒疯癫，我笑自己命太贱；  


import com.alibaba.excel.EasyExcel;
import com.czw.springmvc.entity.Weather;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * Created by czw on 2021/6/15 11:26
 *
 * @author czw
 */
@Controller
public class FileController {
    //实现文件上传
    @RequestMapping(value = "/api/file/upload.do",method = RequestMethod.POST)
    @ResponseBody
    public String upload(MultipartFile file, HttpServletRequest request) throws IOException {
        //校验上传内容
        if (!file.isEmpty()) {
            //获取文件名
            String fn=file.getOriginalFilename();
            //获取上传的文件内容
            byte[] data=file.getBytes();
            //存储到服务器 发布路径(真实路径)
            File f=new File(request.getRealPath("upload"),fn);
            FileOutputStream fos=new FileOutputStream(f);
            fos.write(data);
            fos.close();
            System.err.println(f.getAbsolutePath());
            return "/upload/"+fn;
        }else {
            return "请选择上传的文件";
        }
    }

    //实现文件下载
    @RequestMapping("/api/file/download.do")
    public void down(int count, HttpServletResponse response) throws IOException {
        //1.模拟生成 要下载的数据
        List<Weather> list=new ArrayList<>();
        for(int i=1;i<=count;i++){
            list.add(new Weather(i,"郑州-"+i,i-10,i+10,"小雨"));
        }
        //2.设置响应消息头 告诉请求方 说明这是文件下载
        //设置响应头  告知浏览器，要以附件的形式保存内容   filename=浏览器显示的下载文件名
        response.setHeader("content-disposition","attachment;filename="+new SimpleDateFormat("yyyyMMdd").format(new Date())+".xls");
        //3.将要导出的内容写出  Excel表格
        EasyExcel.write(response.getOutputStream()).sheet("自动下载数据").doWrite(list);
    }

}
